package array.removeElement;

import java.util.Arrays;

/**
 *  题目：给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。# 代表退格字符。
        注意：如果对空文本输入退格字符，文本继续为空。

 * 知识点:
 * 1.在 Java 中，将字符串中的字符逐个装入数组常用方法：toCharArray()
      String str = "Hello";
      char[] charArray = str.toCharArray();
 * 2.返回想要截取的Array部分:Arrays.copyOfRange(数组名, 起点, 终点);
 * 3.判断两个数组是否相等：Arrays.equals(数组1, 数组2);
 */
public class compareString {
    public boolean backspaceCompare(String s, String t) {
        // 处理字符串并获取有效部分
        char[] processedS = processString(s);
        char[] processedT = processString(t);

        // 比较处理后的结果
        return Arrays.equals(processedS, processedT);
    }

    private char[] processString(String str) {
        char[] arr = str.toCharArray();
        int slow = 0;

        for (int fast = 0; fast < arr.length; fast++) {
            if (arr[fast] != '#') {
                // 非退格字符：保留
                arr[slow] = arr[fast];
                slow++;
            } else {
                // 退格字符：删除前一个字符
                if (slow > 0) slow--;
            }
        }

        // 返回有效部分（0 到 slow-1）
        return Arrays.copyOfRange(arr, 0, slow);
    }
}
